home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / qzapsrc / !QZap_c_QMenuselec < prev    next >
Encoding:
Text File  |  1994-11-01  |  5.3 KB  |  170 lines

  1. /*
  2.  * Menuselection.c
  3.  */
  4.  
  5. #define QMenuselection
  6.  
  7. #include "QMain.h"
  8. #include "QMenuselection.h"
  9. #include "QCibarmenu.h"
  10. #include "QCviewermenu.h"
  11. #include "QFrcerdrwall.h"
  12. #include "QFrceselrdrw.h"
  13. #include "QCreatenewview.h"
  14.  
  15. #include "os.h"
  16.  
  17. int ConvertHextoInt(char *hexstring) {
  18.   int result;
  19.   int i;
  20.  
  21.   result=0; i=0;
  22.   while ((result!=-1) && (hexstring[i]>31) && (i<32)) {
  23.     result=result*16+(hexstring[i]-48);
  24.     if (hexstring[i]>='A') result=result-7;
  25.     if (hexstring[i]>='a') result=result-32;
  26.     i++;
  27.   }
  28.   return (result);
  29. }
  30.  
  31. void Menuselection (wimp_block *Block)
  32. {
  33.   wimp_pointer pointer_info;
  34.   int dummy, OSelstart, OSelend;
  35.   wimp_window_state Wstate;
  36.  
  37.   wimp_get_pointer_info(&pointer_info);
  38.   switch (Activemenu)
  39.   {
  40.     case Menuident_Iconbar:
  41.       if (Block->selection.items[0]==Itemiconbarquit)
  42.       {
  43.         Quit=TRUE;
  44.       }
  45.       else
  46.       {
  47.         if (pointer_info.buttons==0)
  48.         {
  49.           Createiconbarmenu(menu_pos);
  50.         }
  51.       }
  52.       break;
  53.     case Menuident_Viewer:
  54.       switch (Block->selection.items[0]) {
  55.         case Itemviewersave:
  56.         os_writec((char)7);
  57.           break;
  58.         case Itemviewerselect:
  59.           switch (Block->selection.items[1]) {
  60.             case Itemselectstart:
  61.               dummy=ConvertHextoInt(selstartval);
  62.               if (dummy!=-1) {
  63.                 OSelstart=Selectionstart;
  64.                 OSelend=Selectionend;
  65.                 Selectionstart=(dummy-Baseaddress)/4;
  66.                 if (Selectionend<=Selectionstart) {
  67.                   Selectionend=Selectionstart+1;
  68.                 }
  69.                 ForceSelectionRedraw(OSelstart, OSelend);
  70.               }
  71.               break;
  72.             case Itemselectend:
  73.               dummy=ConvertHextoInt(selendval);
  74.               if (dummy!=-1) {
  75.                 OSelstart=Selectionstart;
  76.                 OSelend=Selectionend;
  77.                 Selectionend=(dummy-Baseaddress)/4;
  78.                 if (Selectionend<=Selectionstart) {
  79.                   Selectionstart=Selectionend-1;
  80.                 }
  81.                 if (Selectionstart<0) {
  82.                   Selectionstart=0;
  83.                   Selectionend=1;
  84.                 }
  85.                 ForceSelectionRedraw(OSelstart, OSelend);
  86.               }
  87.               break;
  88.             case Itemselectsave:
  89.               break;
  90.           }
  91.           break;
  92.         case Itemviewergotoaddress:
  93.           dummy=ConvertHextoInt(gotoval);
  94.           if ((dummy!=-1) && (Menuviewer!=(wimp_w)-1)) {
  95.             Wstate.w=Menuviewer;
  96.             wimp_get_window_state(&Wstate);
  97.             Block->open.w=Wstate.w;
  98.             Block->open.visible=Wstate.visible;
  99.             Block->open.xscroll=Wstate.xscroll;
  100.             Block->open.yscroll=0-((dummy-Baseaddress)/4)*Charheight;
  101.             Block->open.next=Wstate.next;
  102.             wimp_open_window(&(Block->open));
  103.           }
  104.           break;
  105.         case Itemviewernewview:
  106.           dummy=ConvertHextoInt(newviewval);
  107.           if (dummy!=-1) {
  108.             Createnewview((dummy-Baseaddress)/4);
  109.           }
  110.           break;
  111.         case Itemviewersetbase:
  112.           dummy=ConvertHextoInt(newbaseval);
  113.           if (dummy!=-1) {
  114.             Baseaddress=dummy;
  115.             ForceRedrawAllViewers();
  116.           }
  117.           break;
  118.         case Itemviewerdisplay:
  119.           switch (Block->selection.items[1]) {
  120.             case Itemdisplayinvert:
  121.               Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
  122.                   entries[Foregroundcolour].menu_flags=0;
  123.               Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
  124.                   entries[Backgroundcolour].menu_flags=0;
  125.               dummy=Foregroundcolour;
  126.               Foregroundcolour=Backgroundcolour;
  127.               Backgroundcolour=dummy;
  128.               Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
  129.                   entries[Foregroundcolour].menu_flags=wimp_MENU_TICKED;
  130.               Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
  131.                   entries[Backgroundcolour].menu_flags=wimp_MENU_TICKED;
  132.               ForceRedrawAllViewers();
  133.               break;
  134.             case Itemdisplayforeground:
  135.               if (Block->selection.items[2] != -1) {
  136.                 Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
  137.                     entries[Foregroundcolour].menu_flags=0;
  138.                 Foregroundcolour=Block->selection.items[2];
  139.                 Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
  140.                     entries[Foregroundcolour].menu_flags=wimp_MENU_TICKED;
  141.                 ForceRedrawAllViewers();
  142.               }
  143.               break;
  144.             case Itemdisplaybackground:
  145.               if (Block->selection.items[2] != -1) {
  146.                 Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
  147.                     entries[Backgroundcolour].menu_flags=0;
  148.                 Backgroundcolour=Block->selection.items[2];
  149.                 Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
  150.                     entries[Backgroundcolour].menu_flags=wimp_MENU_TICKED;
  151.                 ForceRedrawAllViewers();
  152.               }
  153.               break;
  154.             default: break;
  155.           }
  156.           break;
  157.         case Itemviewerquit:
  158.           Quit=TRUE;
  159.           break;
  160.         default: break;
  161.       }
  162.       if ((pointer_info.buttons & wimp_CLICK_ADJUST)!=0)
  163.       {
  164.         Createviewermenu(menu_pos, Menuviewer);
  165.       }
  166.       break;
  167.     default: ;
  168.   };
  169. }
  170.